const express = require('express')
const app = express()
const OSS = require('ali-oss')
const port = 9000
const Response = require('./utils/Response.js')
// const {put,getUrl} = require('./utils/oss')
const BASE  = "http://localhost:9000/"
//const BASE  = "http://web.codeboy.com/bmduploadapi/"


const client = new OSS({
    // 以华南3（广州）为例，region填写为oss-cn-guangzhou。
    region: 'oss-cn-beijing',
    // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
    accessKeyId: 'LTAI5tMWizCZUQSaytVVwLQQ',
    accessKeySecret: 'clPQgPRxPXoMWfWvmiqin0fYa8CzO2',
    // 填写待配置跨域资源共享规则的Bucket名称。
    bucket: 'wearmask'
});

// 配置跨域
const cors = require('cors')
app.use(cors({
    origin: "*"
}))



// 配置multer中间件，处理文件上传
const multer = require('multer')
const uuid = require('uuid')
const uploadTools = multer({
    storage: multer.diskStorage({ // 该存储方案将会把文件直接存入磁盘
        // destination: (req, file, callback)=>{
        //     console.log(req.body,file)
        //     callback(null, 'static')
        // },
        filename: (req, file, callback)=>{
            // 通过file，获取原始文件名     huangbo.jpg
            let name = file.originalname       
            // 截取源文件的后缀 .jpg  .png  ....
            let ext = name.substr(name.lastIndexOf('.'))
            // 生成一个随机文件名，调用callback返回即可
            let newName = uuid.v4() + ext
            callback(null, newName)
        }
    })
})

// 配置static目录为静态资源托管文件夹 ， 这样就可以直接通过http://ip:port/文件名  访问static目录下的资源
app.use(express.static('static'))


app.post('/upload', uploadTools.single('file'), async(req, resp)=>{
    // multer中间件将会把文件信息存入：req.files
     //let url = BASE + req.file.filename
     put(req.file.filename,req.file.path)
     async function put(fileSrc,path) {
        console.log('ddd')
        try {
            // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
            // 如果本地文件的完整路径中未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
            const result = await client.put(`publish/${fileSrc}`,path);
            if(result.res.statusCode === 200){
                let url = `https://www.aa.bb.wearmask.cc/publish/${fileSrc}`;
                resp.send(Response.ok(url)) 
            }
            
            console.log(result);
        } catch (e) {
            console.log(e);
        }
    }
    //  console.log(result)
    //  if(result.statusCode === 200){
    //     let url =  `https://www.aa.bb.wearmask.cc/publish/${req.file.filename}` 
    //     resp.send(Response.ok(url))
    //  }
     
})




app.listen(port, ()=>{
    console.log('上传文件服务已经启动...')
})



